package edu.ccut.saturn.component;

import edu.ccut.saturn.component.impl.SaturnBundleFilterInfo;

/**
 * 记录bundle内的所有组件信息及其它配置文件信息。
 * 
 * @author 谷钰
 * 
 * @version 1.0 2008.9.04
 * 
 * @see IDatabaseConfigInfo, IBundleComponentInfo, IMenuInfo,
 *      IBundleAuthorityInfo, IBundleWorkFlowInfo, IBundleValidateInfo,
 *      IBundleDataInfo
 */
//TODO:是否应该保存IMenuInfo，IBundleAuthorityInfo
public interface IBundleInfo {

	/**
	 * Get bundle symbolic name
	 * 
	 * @return
	 */
	public String getBundleSymbolicName();

	/**
	 * Get web root path
	 */
	public String getWebRootPath();

	/**
	 * Set web root path
	 * 
	 * @param path;
	 */
	public void setWebRootPath(String path);

	/**
	 * Get {@link IBundleComponentInfo}
	 * 
	 * @return
	 */
	public IBundleComponentInfo getBundleComopnentInfo();

	/**
	 * Get {@link IBundleDataInfo}
	 * 
	 * @return
	 */
	public IBundleDataInfo getBundleDataInfo();

	/**
	 * Get {@link IBundleSCAInfo}
	 * 
	 * @return
	 */
	public IBundleSCAInfo getBundleSCAInfo();

	/**
	 * Get {@link IBundleValidateInfo}
	 * 
	 * @return
	 */
	public IBundleValidateInfo getBundleValidateInfo();

	/**
	 * 获得bundle的工作流组件信息
	 * @return
	 */
	public IBundleWorkFlowInfo getBundleWorkFlowInfo();

	/**
	 * 获得bundle的权限配置信息
	 * @return
	 */
	public IBundleAuthorityInfo getBundleAuthorityInfo();

	/**
	 * 获得bundle的菜单信息
	 * @return
	 */
	public IMenuInfo getBundleMenuInfo();


	/**
	 * 获得bundle的数据库配置文件信息
	 * @return
	 */
	public IDatabaseConfigInfo getBundleDatabaseInfo();
	
	/**
	 * 获得bundle的过滤器文件信息
	 * @return
	 */
	public SaturnBundleFilterInfo getBundleFilterInfo();

	/**
	 * 设置bundle的数据库配置文件信息
	 * @param databaseConfigInfo
	 */
	public void setBundleDataBaseInfo(IDatabaseConfigInfo databaseConfigInfo);
}
